﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
using Domain;
using System.Data;


namespace DataAcess
{
    public class ImagenData
    {
        public String literalConexion;

        public ImagenData(String literalConexion)
        {
            this.literalConexion = literalConexion;
        }
        
      /*Éste método se puede eliminar y usar sólo el segundo*/
        public int GuardarImagen(byte[] imagen)
        {
            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.CommandText = "guardar_imagen";
            sqlCommand.Connection = conexion;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            SqlParameterCollection parametros = sqlCommand.Parameters;
            SqlParameter parIdImagen = new SqlParameter();
            parIdImagen.Direction = ParameterDirection.Output;
            parIdImagen.DbType = DbType.Int32;
            parIdImagen.ParameterName = "@id_imagen";

            parametros.Add(parIdImagen);
            parametros.Add(new SqlParameter("@imagen", imagen));
            conexion.Open();
            sqlCommand.ExecuteNonQuery();
            int idImagen = Int32.Parse(sqlCommand.Parameters["@id_imagen"].Value.ToString());
            
            return idImagen;
        }

        public int GuardarImagenPdoAlm(byte[] imagen, int idTipoHabitacion)
        {
            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.CommandText = "guardar_imagen";
            sqlCommand.Connection = conexion;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            SqlParameterCollection parametros = sqlCommand.Parameters;
            SqlParameter parIdImagen = new SqlParameter();
            parIdImagen.Direction = ParameterDirection.Output;
            parIdImagen.DbType = DbType.Int32;
            parIdImagen.ParameterName = "@id_imagen";

            parametros.Add(parIdImagen);
            parametros.Add(new SqlParameter("@imagen", imagen));
            conexion.Open();
            sqlCommand.ExecuteNonQuery();
            int idImagen = Int32.Parse(sqlCommand.Parameters["@id_imagen"].Value.ToString());

            String sqlConsult = "Update TipoHabitacion SET id_imagen=" + idImagen + " WHERE id_tipoHabitacion=" + idTipoHabitacion;
            SqlCommand cmdUpdate = new SqlCommand(sqlConsult, conexion);

            SqlParameterCollection parametrosSeccion = cmdUpdate.Parameters;

            parametrosSeccion.Add(new SqlParameter("@id_imagen", idImagen));

            cmdUpdate.ExecuteNonQuery();

            return idImagen;
        }

        public int ActualizarImagenSeccion(byte[] imagen, int idPagina, int idSeccion)
        {
            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.CommandText = "guardar_imagen";
            sqlCommand.Connection = conexion;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            SqlParameterCollection parametros = sqlCommand.Parameters;
            SqlParameter parIdImagen = new SqlParameter();
            parIdImagen.Direction = ParameterDirection.Output;
            parIdImagen.DbType = DbType.Int32;
            parIdImagen.ParameterName = "@id_imagen";

            parametros.Add(parIdImagen);
            parametros.Add(new SqlParameter("@imagen", imagen));
            conexion.Open();
            sqlCommand.ExecuteNonQuery();
            int idImagen = Int32.Parse(sqlCommand.Parameters["@id_imagen"].Value.ToString());

            String sqlConsult = "Update Seccion SET id_imagen=" + idImagen + " WHERE id_seccion=" + idSeccion + "and id_pagina=" + idPagina ;
            SqlCommand cmdUpdate = new SqlCommand(sqlConsult, conexion);

            SqlParameterCollection parametrosSeccion = cmdUpdate.Parameters;

            parametrosSeccion.Add(new SqlParameter("@id_imagen", idImagen));

            cmdUpdate.ExecuteNonQuery();

            return idImagen;
        }

        public Imagen GetImagen(int idImagen)
        {
            String SqlSelect2 = "SELECT * FROM Imagen WHERE id_imagen=" + idImagen;
            SqlConnection conexion2 = new SqlConnection(literalConexion);
            SqlCommand cmdSelect2 = new SqlCommand(SqlSelect2, conexion2);
            conexion2.Open();
            SqlDataReader reader2 = cmdSelect2.ExecuteReader();

            Imagen imagen = new Imagen();

            if (reader2.Read())
            {
                imagen.IdImagen = reader2.GetInt32(0);
                imagen.Image = (byte[])reader2.GetSqlBinary(1);
            }
            conexion2.Close();

            return imagen;
        }
    }

}